package vista;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.table.AbstractTableModel;
import javax.swing.SwingUtilities;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class VentanaOrden extends javax.swing.JFrame {
	

	private JPanel jPanOrden;
	private JButton jbtnRegistrar;
	private JLabel jlblCategoria;
	private JSeparator jSeparator3;
	private JTextField jtxtTelefono;
	private JLabel jlblTelefono;
	private JTextField jtxtDireccion;
	private JLabel jlblDireccion;
	private JSeparator jSeparator2;
	private JSeparator jSeparator1;
	private JFormattedTextField jFormTxtPedido;
	private JButton jbtnBuscar;
	private JLabel jLabel1;
	private JTextField jtxtCedula;
	private JTextField jtxtApellido;
	private JTextField jtxtTotalPagar;
	private JLabel jlbApellido;
	private JButton jbtnImagen;
	private JButton jbtnIngresarProductoTabla;
	private JButton jbtnSalir;
	private JButton jbtnCancelar;
	private JTable jTableOrdenProducto;
	private JScrollPane jScrollPaneOrdenProducto;
	private JSeparator jSeparator5;
	private JSeparator jSeparator4;
	private JComboBox jcmbCategoriaOrden;
	private JTextField jtxtNombreCli;
	private JLabel lblNombreCli;
	private JFormattedTextField jFormtxtCliente;
	private JTextField jtxtCodOrden;
	private JLabel jlblCodOrden;
	private JTextField jtxtCodProductoOrden;
	private JComboBox jcmbProductoOrden;
	private JTextField jtxtcodcategoria;
	private JLabel jlblSelecProducto;
	private JLabel jlblfechaorden;
	private JTextField jtxtFechaOrden;
	private JButton jbtnProcesar;
	private JLabel jlbltotalpagar;
	
	

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				VentanaOrden inst = new VentanaOrden();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public VentanaOrden() {
		super();
		initGUI();
	}

	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			getContentPane().setBackground(new java.awt.Color(82,209,232));
			{
				jPanOrden = new JPanel();
				getContentPane().add(jPanOrden);
				jPanOrden.setBounds(12, 12, 550, 753);
				jPanOrden.setLayout(null);
				jPanOrden.setBackground(new java.awt.Color(255,255,255));
				{
					jlblCodOrden = new JLabel();
					jPanOrden.add(jlblCodOrden);
					jlblCodOrden.setText("Nro. Orden:");
					jlblCodOrden.setBounds(333, 103, 84, 20);
				}
				{
					jtxtCodOrden = new JTextField();
					jPanOrden.add(jtxtCodOrden);
					jtxtCodOrden.setBounds(417, 103, 73, 21);
				}
				{
					jFormtxtCliente = new JFormattedTextField();
					jPanOrden.add(jFormtxtCliente);
					jFormtxtCliente.setText("Nuestro Cliente");
					jFormtxtCliente.setBounds(12, 160, 505, 21);
					jFormtxtCliente.setBackground(new java.awt.Color(82,209,232));
					jFormtxtCliente.setEditable(false);
				}
				{
					lblNombreCli = new JLabel();
					jPanOrden.add(lblNombreCli);
					lblNombreCli.setText("Nombre:");
					lblNombreCli.setBounds(12, 232, 86, 14);
				}
				{
					jtxtNombreCli = new JTextField();
					jPanOrden.add(jtxtNombreCli);
					jtxtNombreCli.setBounds(116, 229, 122, 21);
				}
				{
					jlbApellido = new JLabel();
					jPanOrden.add(jlbApellido);
					jlbApellido.setText("Apellido:");
					jlbApellido.setBounds(12, 261, 86, 14);
				}
				{
					jtxtApellido = new JTextField();
					jPanOrden.add(jtxtApellido);
					jtxtApellido.setBounds(116, 258, 122, 21);
				}
				{
					jtxtCedula = new JTextField();
					jPanOrden.add(jtxtCedula);
					jtxtCedula.setBounds(116, 199, 122, 21);
				}
			
			{
				jbtnRegistrar = new JButton();
				jPanOrden.add(jbtnRegistrar);
				jbtnRegistrar.setText("Registrar");
				jbtnRegistrar.setBounds(305, 245, 80, 22);
				jbtnRegistrar.setBackground(new java.awt.Color(82,209,232));
				jbtnRegistrar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
			}
			{
				jLabel1 = new JLabel();
				jPanOrden.add(jLabel1);
				jLabel1.setText("C.I:");
				jLabel1.setBounds(12, 202, 92, 14);
			}
			{
				jbtnBuscar = new JButton();
				jPanOrden.add(jbtnBuscar);
				jbtnBuscar.setText("Buscar");
				jbtnBuscar.setBounds(305, 204, 80, 22);
				jbtnBuscar.setBackground(new java.awt.Color(82,209,232));
				jbtnBuscar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
			}
			{
				jFormTxtPedido = new JFormattedTextField();
				jPanOrden.add(jFormTxtPedido);
				jFormTxtPedido.setText("Orden de Nuestro Cliente");
				jFormTxtPedido.setBounds(12, 383, 505, 22);
				jFormTxtPedido.setBackground(new java.awt.Color(82,209,232));
				jFormTxtPedido.setEditable(false);
			}
			{
				jSeparator1 = new JSeparator();
				jPanOrden.add(jSeparator1);
				jSeparator1.setBounds(12, 372, 512, 11);
				jSeparator1.setBackground(new java.awt.Color(28,209,232));
			}
			{
				jSeparator2 = new JSeparator();
				jPanOrden.add(jSeparator2);
				jSeparator2.setBounds(12, 143, 512, 11);
				jSeparator2.setBackground(new java.awt.Color(28,209,232));
			}
			{
				jlblDireccion = new JLabel();
				jPanOrden.add(jlblDireccion);
				jlblDireccion.setText("Dirección:");
				jlblDireccion.setBounds(12, 295, 85, 15);
			}
			{
				jtxtDireccion = new JTextField();
				jPanOrden.add(jtxtDireccion);
				jtxtDireccion.setBounds(115, 292, 123, 22);
			}
			{
				jlblTelefono = new JLabel();
				jPanOrden.add(jlblTelefono);
				jlblTelefono.setText("Telefono:");
				jlblTelefono.setBounds(12, 329, 85, 15);
			}
			{
				jtxtTelefono = new JTextField();
				jPanOrden.add(jtxtTelefono);
				jtxtTelefono.setBounds(115, 326, 123, 22);
			}
			{
				jSeparator3 = new JSeparator();
				jPanOrden.add(jSeparator3);
				jSeparator3.setBounds(277, 196, 22, 164);
				jSeparator3.setOrientation(SwingConstants.VERTICAL);
				jSeparator3.setBackground(new java.awt.Color(28,209,232));
			}
			{
				jlblCategoria = new JLabel();
				jPanOrden.add(jlblCategoria);
				jlblCategoria.setText("Seleccione la categoría:");
				jlblCategoria.setBounds(60, 426, 193, 15);
			}
			{
				jcmbCategoriaOrden = new JComboBox();
				jPanOrden.add(jcmbCategoriaOrden);
				jcmbCategoriaOrden.setBounds(60, 448, 171, 22);
				jcmbCategoriaOrden.setBackground(new java.awt.Color(82,209,232));
				jcmbCategoriaOrden.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
			}
		
			{
				jSeparator4 = new JSeparator();
				jPanOrden.add(jSeparator4);
				jSeparator4.setBounds(12, 417, 512, 3);
				jSeparator4.setBackground(new java.awt.Color(28,209,232));
			}
			{
				jSeparator5 = new JSeparator();
				jPanOrden.add(jSeparator5);
				jSeparator5.setBounds(12, 187, 512, 10);
				jSeparator5.setBackground(new java.awt.Color(28,209,232));
			}
			{
				//Instanciamos el contenedor de la tabla
				jScrollPaneOrdenProducto = new JScrollPane();
				jPanOrden.add(jScrollPaneOrdenProducto);
				jScrollPaneOrdenProducto.setBounds(73, 528, 418, 119);
			}
			{
				jbtnCancelar = new JButton();
				jPanOrden.add(jbtnCancelar);
				jbtnCancelar.setText("Cancelar");
				jbtnCancelar.setBounds(334, 706, 69, 22);
				jbtnCancelar.setBackground(new java.awt.Color(82,209,232));
			}
			{
				jbtnSalir = new JButton();
				jPanOrden.add(jbtnSalir);
				jbtnSalir.setText("Salir");
				jbtnSalir.setBounds(420, 706, 72, 22);
				jbtnSalir.setBackground(new java.awt.Color(82,209,232));
			}
			{
				jbtnIngresarProductoTabla = new JButton();
				jPanOrden.add(jbtnIngresarProductoTabla);
				jbtnIngresarProductoTabla.setText("Cargar Productos ");
				jbtnIngresarProductoTabla.setBounds(238, 495, 147, 22);
				jbtnIngresarProductoTabla.setBackground(new java.awt.Color(82,209,232));
				jbtnIngresarProductoTabla.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
			}
			{
				
				jcmbProductoOrden = new JComboBox();
				jPanOrden.add(jcmbProductoOrden);
				jcmbProductoOrden.setBounds(61, 495, 165, 22);
				jcmbProductoOrden.setBackground(new java.awt.Color(82,209,232));
				jcmbProductoOrden.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
			}
			{
				jlblSelecProducto = new JLabel();
				jPanOrden.add(jlblSelecProducto);
				jlblSelecProducto.setText("Seleccione el producto:");
				jlblSelecProducto.setBounds(61, 474, 159, 15);
			}
			{
				jtxtcodcategoria = new JTextField();
				jPanOrden.add(jtxtcodcategoria);
				jtxtcodcategoria.setBounds(223, 406, 55, 22);
				jtxtcodcategoria.setEditable(false);
				jtxtcodcategoria.setVisible(false);
			}
			{
				jtxtCodProductoOrden = new JTextField();
				jPanOrden.add(jtxtCodProductoOrden);
				jtxtCodProductoOrden.setBounds(410, 449, 55, 22);
				jtxtCodProductoOrden.setVisible(false);
				jtxtCodProductoOrden.setEditable(false);
			}
			{
				jlbltotalpagar = new JLabel();
				jPanOrden.add(jlbltotalpagar);
				jlbltotalpagar.setText("Total a Pagar (BsF):");
				jlbltotalpagar.setBounds(287, 660, 124, 14);
			}
			{
				jtxtTotalPagar = new JTextField();
				jPanOrden.add(jtxtTotalPagar);
				jtxtTotalPagar.setBounds(423, 657, 69, 21);
				jtxtTotalPagar.setEditable(false);
			}
			{
				jbtnImagen = new JButton();
				jbtnImagen.setIcon(new ImageIcon(getClass().getClassLoader().getResource("imagen.jpg")));
				jPanOrden.add(jbtnImagen);
				jbtnImagen.setBounds(36, 6, 181, 132);
				jbtnImagen.setBackground(new java.awt.Color(82,209,232));
				jbtnImagen.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
			}
			{
				//Instanciamos la tabla en donde aparecen los productos
				jTableOrdenProducto = new JTable();
				//jPanOrden.add(jTableOrdenProducto);
				jTableOrdenProducto.setBounds(48, 535, 459, 102);
				//agregamos una tabla al contenedor con un scroll
				jScrollPaneOrdenProducto.add(jTableOrdenProducto);
			}
			{
				jbtnProcesar = new JButton();
				jPanOrden.add(jbtnProcesar);
				jbtnProcesar.setText("Procesar");
				jbtnProcesar.setBounds(403, 496, 108, 21);
				jbtnProcesar.setBackground(new java.awt.Color(82,209,232));
			}
			{
				jtxtFechaOrden = new JTextField();
				jPanOrden.add(jtxtFechaOrden);
				jtxtFechaOrden.setBounds(417, 71, 73, 21);
			}
			{
				jlblfechaorden = new JLabel();
				jPanOrden.add(jlblfechaorden);
				jlblfechaorden.setText("Fecha:");
				jlblfechaorden.setBounds(333, 74, 63, 14);
			}
			{
				jbtnCancelar = new JButton();
				jPanOrden.add(jbtnCancelar);
				jbtnCancelar.setText("Cancelar");
				jbtnCancelar.setBounds(305, 289, 80, 21);
				jbtnCancelar.setBackground(new java.awt.Color(82,209,232));
				jbtnCancelar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
			}

			}
			pack();
			this.setSize(578, 813);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	

	//Ingresa los producto de la clase que hereda de AbstractTableModel
	public void IngresarProductos(AbstractTableModel abstractTableModel) {
		jTableOrdenProducto.setModel(abstractTableModel);

		jTableOrdenProducto.addMouseListener(new MouseAdapter()
          {
		      public void mouseClicked(MouseEvent e) 

		      {
		         int fila = jTableOrdenProducto.rowAtPoint(e.getPoint());

		         int columna = jTableOrdenProducto.columnAtPoint(e.getPoint());

		         if ((fila > -1) && (columna > -1));

		           // System.out.println(modelo.getValueAt(fila,columna));

		      }
		   });
	
	}
	
	public void addListener(ActionListener actionListener) {
		this.jcmbCategoriaOrden.addActionListener(actionListener);
		this.jcmbProductoOrden.addActionListener(actionListener);
		this.jbtnBuscar.addActionListener(actionListener);
		this.jbtnRegistrar.addActionListener(actionListener);
		this.jbtnCancelar.addActionListener(actionListener);
		this.jbtnIngresarProductoTabla.addActionListener(actionListener);
		this.jbtnSalir.addActionListener(actionListener);
		this.jbtnProcesar.addActionListener(actionListener);
		this.jbtnCancelar.addActionListener(actionListener);
	}
	

	public void setcargarComboCategoria(List<String> categorias) {
        ComboBoxModel jcmbCategoriaOrdenModelModel =
            new DefaultComboBoxModel(categorias.toArray());
        jcmbCategoriaOrden.setModel(jcmbCategoriaOrdenModelModel);
	}
	
	public void setcargarComboProducto(List<String> productos) {
        ComboBoxModel jcmbProductoOrdenModelModel =
            new DefaultComboBoxModel(productos.toArray());
        jcmbProductoOrden.setModel(jcmbProductoOrdenModelModel);
	}
	
	public String getTelefono() {
		return jtxtTelefono.getText();
	}

	public String getDireccion() {
		return jtxtDireccion.getText();
	}

	public String getCedulaCli() {
		return jtxtCedula.getText();
	}

	
	public String getApellido() {
		return jtxtApellido.getText();
	}

	public String getNombre() {
		return jtxtNombreCli.getText();
	}

	public String getCodOrden() {
		return jtxtCodOrden.getText();
	}

	public void setJtxtCodOrden(String jtxtCodOrden) {
		this.jtxtCodOrden.setText(jtxtCodOrden);
	}
	
	
	public String getCodProductoOrden() {
		return jtxtCodProductoOrden.getText();
	}

	public void setJtxtCodProductoOrden(String valor3) {
		this.jtxtCodProductoOrden.setText(valor3);
	}

	public String getJtxtcodcategoria() {
		return jtxtcodcategoria.getText();
	}

	public void setJtxtcodcategoria(String valor0) {
		this.jtxtcodcategoria.setText(valor0);
	}
	
	public void setJtxtDireccion(String jtxtDireccion) {
		this.jtxtDireccion.setText(jtxtDireccion);
	}

	public void setJtxtCedula(String jtxtCedula) {
		this.jtxtCedula.setText(jtxtCedula);
	}

	public void setJtxtApellido(String jtxtApellido) {
		this.jtxtApellido.setText(jtxtApellido);
	}

	public String getTotalPagar() {
		return jtxtTotalPagar.getText();
	}

	public void setJtxtTotalPagar(String jtxtTotalPagar) {
		this.jtxtTotalPagar.setText(jtxtTotalPagar);
	}

	public void setJtxtNombreCli(String jtxtNombreCli) {
		this.jtxtNombreCli.setText(jtxtNombreCli);
	}

	public String getFechaOrden() {
		return jtxtFechaOrden.getText();
	}

	public void setJtxtFechaOrden(String jtxtFechaOrden) {
		this.jtxtFechaOrden.setText(jtxtFechaOrden);
	}

	public JTable getjTableOrdenProducto() {
		return jTableOrdenProducto;
	}

	//Para retornar el texto del comboo!!!
	public String getJcmbCategoriaOrden() {
		return jcmbCategoriaOrden.getSelectedItem().toString();
	}

	public String getJcmbProductoOrden() {
		return jcmbProductoOrden.getSelectedItem().toString();
	}
	
	public void mostrarMensaje(String mensaje) {
		JOptionPane.showMessageDialog(this, mensaje);
	}
	
	public void borrarDatos (){
		jtxtCedula.setText("");
		jtxtNombreCli.setText("");
		jtxtApellido.setText("");
		jtxtDireccion.setText("");
		jtxtTelefono.setText("");
		jtxtCodOrden.setText("");
		jtxtFechaOrden.setText("");
		jtxtCedula.setEditable(true);
		jtxtNombreCli.setEditable(true);
		jtxtApellido.setEditable(true);
		jtxtDireccion.setEditable(true);
		jtxtTelefono.setEditable(true);
	}
	
	public void CamposNoEditables(){
		jtxtCedula.setEditable(false);
		jtxtNombreCli.setEditable(false);
		jtxtApellido.setEditable(false);
		jtxtDireccion.setEditable(false);
		jtxtTelefono.setEditable(false);
	}
}